跳到主要内容

搭建远程 Java开发环境

VSCode 远程连接

安装远程连接插件

然后就是 ssh 连接,配置公钥密钥免密登陆就不细说了

配置服务器

因为常常需要对 api 进行调试,所以这里使用 nginx 配置一个虚拟主机,专门用来做测试接口

# 转发 80 端口到 https
server
{
if ($host = test.alsritter.icu) {
return 301 https://$host$request_uri;
} # managed by Certbot


listen 80;
server_name test.alsritter.icu;
return 404; # managed by Certbot
}

# 配置测试项目接口
server
{
server_name test.alsritter.icu;

gzip on;

location / {
proxy_pass http://localhost:8080;

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;

client_max_body_size 100m;
client_body_buffer_size 128k;

proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/alsritter.icu/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/alsritter.icu/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

注意,这里使用了 SSL 别忘了要重新申请下子域名

certbot --nginx

# 申请完成后重启下 nginx
nginx -s reload

安装 JDK

wget https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz

# 解压
tar -zxvf openjdk-11+28_linux-x64_bin.tar.gz

# 或者使用这个版本的
wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/11.0.8%2B10/openlogic-openjdk-11.0.8%2B10-linux-x64.tar.gz

# 解压
tar -zxvf openlogic-openjdk-11.0.8+10-linux-x64.tar.gz

配置环境变量

$ vim ~/.bashrc

# 末尾增加如下内容(根据自己jdk目录修改):
export JAVA_HOME=/usr/local/jdk/jdk-11
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
# 注:
# 修改所有用户的环境变量:/etc/profile文件
# 只修改root用户的环境变量:~/.bashrc文件


$ source ~/.bashrc # 使配置文件生效

检查是否安装成功

注意,如果运行着多个终端,需要重启其它的终端才能检查到环境变量变化了(或者直接在别的终端执行这个 source ~/.bashrc 命令) ,且不用使用 ~/.bash_profile 具体原因看 Linux 配置环境变量那篇笔记

配置远程 Maven 仓库

先安装一下 Maven

wget https://apache.website-solution.net/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
# 解压
tar -zxvf apache-maven-3.6.3-bin.tar.gz

同上配置环境变量

export JAVA_HOME=/usr/local/jdk/jdk-11
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

export M2_HOME=/home/alsritter/JavaTool/apache-maven-3.6.3/
export MAVEN_HOME=${M2_HOME}
export MAVEN_BIN=${M2_HOME}/bin/
export PATH=${PATH}:${MAVEN_HOME}:${MAVEN_BIN}

检查是否安装好

mvn -v

然后修改下配置文件


<localRepository>/home/alsritter/JavaTool/mavenRepo</localRepository>

<!-- .... -->

<mirrors>
<mirror>
<id>aliyun</id>
<mirrorOf>*</mirrorOf>
<name>aliyun Maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>

配置 Java环境插件

参考资料 VS Code 中有哪些好用的 Java 插件?

安装这个 Java 插件包,它会自动把 Java环境用到的插件都装上

首先配置这个核心插件

Red Hat 的 Java 插件是每个 VS Code Java 用户的必装插件。对 Maven/Gradle 项目的基本支持、代码格式化,代码重构、代码片段、语法高亮、代码自动补全等等核心功能,都在这个插件中。

值得注意,这些插件设置是有远程设置和本地设置之分的

需要配置这个远程的配置文件

{
"java.home": "/usr/local/jdk/jdk-11",
// "java.configuration.runtimes": [
// {
// "name": "JavaSE-11",
// "path": "/usr/local/jdk/jdk-11",
// },
// ],
"remote.autoForwardPortsSource": "output",
"spring-boot.ls.java.home": "/usr/local/jdk/jdk-11"
}

Debug 插件

调试对于每一个语言来说当然是必不可少的功能。Debugger for Java 除了提供 Launch/Attach、断点/条件断点、Step In/Out/Over、Callstacks 这些基本功能,还支持 Logpoints、Hot Code Replace 等高级功能,使得调试 Java 项目如丝般顺滑。

单元测试插件

Java Test Runner 对主流的测试框架 JUnit 和 TestNG 都有着很好的支持。在 Test Explorer 中,可以方便地查看所有测试用例、运行/调试测试代码、查看测试报告。如下看

Maven 插件

项目地址 Maven for Java

这个插件可以显示 Maven 插件

这个需要配置一下

"maven.executable.path": "/home/alsritter/JavaTool/apache-maven-3.6.3/bin/mvn"

检查错误

插件地址 vscode-checkstyle

这个插件基本上是必装的

能够自动修复一些 bug

SonarLint 插件

插件地址 SonarLint for Visual Studio Code

相信用过 IDEA 的都知道这个插件,这里就不作解释了

但是这个插件和 Lombok 插件有些冲突,如下所示,所以需要关掉一些规则(遇到时 ctrl 加回车有提示)

项目管理插件

插件地址 Project Manager for Java

这个插件主要用来看当前 Java 项目用到的依赖(可以直接显示 Maven的)

Spring 相关插件

安装 Spring 大礼包插件

详情参考 spring-projects/sts4

辅助性的插件

YAML 插件

插件地址 YAML

按着 Ctrl 键点击 yml 属性可以自动跳转到对应的元文件定义里面

这个插件要使用 Red Hat 的

XML 插件

插件地址 XML Language Support by Red Hat

Lombok 插件

MyBatis 插件

项目地址 base on vscode-mybatisx

TODO 插件

效果如下

IDEA 快捷键插件

项目地址 IntelliJ IDEA Key Bindings for Visual Studio Code

如果不习惯 VsCode 的快捷方式,可以使用这个插件

使用工作区整理插件

上面配置了一堆插件,会显得 Vscode 十分臃肿,这时就可以使用工作区来整理它们

找到当前插件,若是 Java 插件集合建议打开其扩展包。

有两个选项

第一个选项“禁用”为你的用户设置 第二个选项“禁用(工作区)”为工作区设置

选择“禁用(工作区)”。

此设置会只应用到当前工作区下,不会影响用户设置和其他工作区的设置,文件夹无此设置。

然后会看到当前工作区启用了哪些插件

IDEA

参考资料 jetbrains 家的 IDE 有没有类似 vscode remote 这样的功能? V2EX 参考资料 IDEA Full remote mode

IDEA 好像没有直接 ssh 连接上服务器直接改代码的功能,所以得通过 FTP 进行文件同步的方式来同步代码

注意:JB 系列的 remote 和 vscode 的不一样

  • JB 系列是调用远程的命令进行调试和编译,同时用 rsync 把远程代码同步到本地,在本地对代码进行操作
  • vscode 是代码不落到本地,在远程架一个 headless vscode,和本地仅通信最基本的 UI 需要的信息

他们的区别在于,vscode 的模式下,可以达到代码不进入本地电脑的企业级安全性要求,且 code intellisense 等基于代码分析的能力在远端进行,可以享用高配置的 server 的性能,简单来说,JB 的所谓 remote mode,本质还是同步,而 vscode remote 是真正的云开发

TODO: 待更新...